Overweight SOA Application? Try Microservices!

BTI360 Blog / August 12, 2014 in 

This year’s BTI360 attendance at OSCON provided a handful of teammates the perfect opportunity to learn about both new technologies and the direction of the open source community.One topic that peaked my interest was microservices.

The main idea is that a large service oriented application can be broken down into separate ‘lighter’ services that each run in their own process, and this architecture brings a handful of advantages over the single application architecture.

Martin Fowler’s website has a great article on Microservice Architectures. The definition is not hard and fast but rather a recognition of emerging characteristics that make services ‘micro’. The article is especially pragmatic about breaking down a monolithic application into many microservices. A single application architecture should be broken down only when issues arise that microservices could solve.

From what I have read about the topic, here are the top three advantages I see to using microservices:

1. Componentization via Services
When you break your services up into separate components, you can both deploy and scale them in a much finer grained fashion. Single, monolithic service applications must be entirely deployed even for a minor change to a service, and cannot easily have individual services scaled up and down on demand. With microservices, you simply start or stop processes as needed.

2. Organized Around Business Capabilities
Teams can be more cross-functional when an application is broken up into microservices. Rather than organize people according to which layer they are working on in the monolithic service architecture, they can be split up to tackle smaller business oriented capabilities together. This will also give clarity of the team boundaries.

3. Decentralized Governance
Microservice teams have more freedom to choose what technology stack, libraries, and tools they want to use to create their service with. This flexibility allows for each service to be implemented using what technologies and practices work best. In addition, as a team figures out these best technologies and practices, they can help propagate that knowledge to other teams and grow the overall organizational skill set.
I agree with the Fowler article that it is too early to declare microservices the wave of the future but they sure seem useful to me. I’ve recently begun playing around with the Python Flask framework to see how it works out in practice.

So what are your thoughts on microservices? Have any success or failure stories from working with them on a project?

Previous

Dealing With Disrespect: 4 Things to Keep in Mind During Code Reviews

Next

Jonathan to speak at DevIgnition 2014 on Vagrant vs Docker!

Close Form

Enjoy our Blog?

Then stay up-to-date with our latest posts delivered right to your inbox.

  • This field is for validation purposes and should be left unchanged.

Or catch us on social media

Stay in Touch

Whether we’re honing our craft, hanging out with our team, or volunteering in the community, we invite you to keep tabs on us.

  • This field is for validation purposes and should be left unchanged.